package notes.java.sjms23.t15_observer;

import java.util.ArrayList;
import java.util.List;

// 被观察者 具体实现 微信服务
public class WeixinServer implements Observerable {

	//注意到这个List集合的泛型参数为Observer接口，设计原则：面向接口编程而不是面向实现编程
    private List<Observer> list = new ArrayList<>();
    
    // 消息
    private String msg;
    
	@Override
	public void register(Observer o) {
		// 注册
		list.add(o);
	}

	@Override
	public void delete(Observer o) {
		// 取消注册
		if(!list.isEmpty()) {
			list.remove(o);
		}
	}

	@Override
	public void notifyObserver() {
		// 通知所有观察者
		list.forEach(observice -> {
			observice.update(msg);
		});
	}

	// 发送消息
	public void sendMsg(String msg) {
		this.msg = msg;
		notifyObserver();
	}
}
